// import 'dart:typed_data';
// import 'dart:ui';
//
// import 'package:dio/dio.dart';
// import 'package:flutter/cupertino.dart';
// import 'package:flutter_base/componet/alert.dart';
// import 'package:flutter_base/const/constant.dart';
// import 'package:flutter_base/const/url.dart';
// import 'package:flutter_base/model/FileModel.dart';
// import 'package:flutter_base/util/utils.dart';
// import 'package:flutter_image_compress/flutter_image_compress.dart';
// import 'package:fluttertoast/fluttertoast.dart';
// import 'package:permission_handler/permission_handler.dart';
// import 'package:wechat_assets_picker/wechat_assets_picker.dart';
// import 'package:wechat_camera_picker/wechat_camera_picker.dart';
//
// typedef ImageOSSPathCallback = void Function(String imageOSSPath, BoxFit fit);
//
// enum AssetsType {
//   image,
//   video,
//   all,
// }
//
// class AssetsModel {
//   AssetsModel({
//     this.path,
//     this.assetsType,
//     this.size,
//     this.name,
//     this.firstFramePath,
//     this.format,
//   });
//
//   String? path;
//   String? format;
//   String? name;
//   String? firstFramePath;
//   AssetsType? assetsType;
//   Size? size;
// }
// ///获取图片
// class AssetUtils {
//   static const int _maxSize = 20971520;
//
//   static Future<AssetsModel?> selectAssets(BuildContext context,
//       {
//
//         ///图片剪切宽高比
//         double? cropAspectRatio,
//         AssetsType? assetsType}) async {
//     final data = await showBottomSheets(
//         context, const AlertMultipleChoice(Constant.imageSelectType));
//     print(data);
//     if (data == null) return null;
//     final permission = await requestPermissions(Permission.camera, '相机') &&
//         await requestPermissions(Permission.storage, '手机存储');
//     if (!permission) return null;
//    late AssetEntity entity;
//     RequestType requestType = RequestType.common;
//     switch (assetsType) {
//       case AssetsType.image:
//         requestType = RequestType.image;
//         break;
//       case AssetsType.video:
//         requestType = RequestType.video;
//         break;
//       case AssetsType.all:
//         requestType = RequestType.common;
//         break;
//     }
//     if (data == Constant.imageSelectType[0]) {
//       final List<AssetEntity>? assets = await AssetPicker.pickAssets(context,
//           maxAssets: 3, requestType: requestType, selectedAssets: []);
//       if (assets == null || assets.isEmpty) return null;
//       entity = assets[0];
//     } else if (data == Constant.imageSelectType[1]) {
//       entity = (await CameraPicker.pickFromCamera(context,
//           resolutionPreset: ResolutionPreset.high))!;
//     }
//     if (entity == null) return null;
//     if ((await entity.originBytes)!.length > _maxSize) {
//       Fluttertoast.showToast(msg: '最大选择20M视频或图片');
//       return null;
//     }
//     if (entity.type == AssetType.image) {
//       final Uint8List? image = await entity.originBytes;
//       print('${image!.length}');
//       // if (image.length > (_maxSize / 2)) {
//       //   ///压缩 10M 以上的图片
//       //   image = await compressImage(entity);
//       //   print(image.length);
//       //   if (image == null) {
//       //     Toast.show('图片压缩失败', context);
//       //     return null;
//       //   }
//       //
//       //   ///剪切图片
//       //   // final String cropPath = await showCupertinoBottomPagePopup(
//       //   //     widget: CropImage(image: image, cropAspectRatio: cropAspectRatio));
//       //   //
//       //   // if (cropPath != null)
//       //   return AssetsModel(
//       //       path: entity.relativePath,
//       //       assetsType: AssetsType.image,
//       //       size: entity.size);
//       // }
//       final path=await entity.file;
//       print(path!.absolute);
//       print(path.path);
//       return AssetsModel(
//           path: path.path,
//           assetsType: AssetsType.image,
//           size: entity.size);
//     }
//   }
//
//   /// 上传图片或视频
//   static Future<FileModel> uploadFile(AssetsModel assets) async {
//     // final formData =
//     // FormData.fromMap({'file': MultipartFile.fromFileSync(assets.path)});
//     // final data = await DioUtils.upload(AppUrl.upload, formData);
//     // if (data != null && resultSuccessFail(data))
//     //   return getFileModelList(data.data as List)[0];
//     ///创建Dio
//     final Dio dio = Dio();
//     print('asset path------------${assets.path}');
//     // final permission = await requestPermissions(Permission.storage, '手机存储');
//     // if (!permission) return null;
//     final Map<String, dynamic> map = {
//       'file': await MultipartFile.fromFile(assets.path!)
//     };
//     ///通过FormData
//     final FormData formData = FormData.fromMap(map);
//
//     ///发送post
//     final Response response = await dio.post(
//       AppUrl.upload, data: formData,
//
//       ///这里是发送请求回调函数
//       ///[progress] 当前的进度
//       ///[total] 总进度
//       onSendProgress: (int progress, int total) {
//         print('当前进度是 $progress 总进度是 $total');
//       },
//     );
//
//     ///服务器响应结果
//     var data = response.data;
//     print('$data');
//     return getFileModelList(data as List)[0];
//   }
//
//   ///选择并上传图片
//   static Future<FileModel?> selectAndUpload(BuildContext context,
//       [double? cropAspectRatio]) async {
//     final path = await selectAssets(context, cropAspectRatio: cropAspectRatio??0);
//     if (path == null) return null;
//     print('path------$path');
//     return await uploadFile(path);
//   }
//
//   ///压缩图片
//   static Future<Uint8List?> compressImage(AssetEntity entity) async {
//     if (entity.width == null ||
//         entity.width == 0 ||
//         entity.height == null ||
//         entity.height == 0) return null;
//     final originBytes = await entity.originBytes;
//     int width = entity.width;
//     int height = entity.height;
//     if (width > 1000) {
//       final p = width / 1000;
//       width = 1000;
//       height = height.toDouble() ~/ p;
//     }
//     if (originBytes!.length < 50000) {
//       return originBytes;
//     } else {
//       return await FlutterImageCompress.compressWithList(originBytes,
//           minHeight: height, minWidth: width);
//     }
//   }
// }
// // class CropImage extends StatefulWidget {
// //   const CropImage({Key key, @required this.image, this.cropAspectRatio = 1})
// //       : super(key: key);
// //
// //   final Uint8List image;
// //   final double cropAspectRatio;
// //
// //   @override
// //   _CropImageState createState() => _CropImageState();
// // }
// // class _CropImageState extends State<CropImage> {
// //   GlobalKey editorKey = GlobalKey();
// //
// //   @override
// //   Widget build(BuildContext context) => Scaffold(
// //       appBarTitle: '图片裁剪',
// //       appBarRightWidget: SimpleButton(
// //           text: '确定',
// //           alignment: Alignment.center,
// //           padding: const EdgeInsets.only(left: 12),
// //           textStyle: TStyle(),
// //           onTap: saveImage),
// //       child: ExtendedImage.memory(widget.image,
// //           fit: BoxFit.contain,
// //           mode: ExtendedImageMode.editor,
// //           extendedImageEditorKey: editorKey,
// //           initEditorConfigHandler: (state) => EditorConfig(
// //             maxScale: 8.0,
// //             cropRectPadding: const EdgeInsets.all(20.0),
// //             cropAspectRatio: widget.cropAspectRatio,
// //             hitTestSize: 20.0,
// //           )));
// //
// //   Future<void> saveImage() async {
// //     final Uint8List fileData = Uint8List.fromList(
// //         await AssetsUtils.cropImageDataWithNativeLibrary(
// //             state: editorKey.currentState as ExtendedImageEditorState));
// //     final String path = await AssetsUtils.saveImage(fileData);
// //     pop(path);
// //   }
// // }
